#include <iostream>

// 两个重载的函数：分别接受左值引用和右值引用
void process(int& x) {
    std::cout << "Lvalue\n";
}

void process(int&& x) {
    std::cout << "Rvalue\n";
}

// relay 是转发函数，使用万能引用和 std::forward 实现完美转发
template<typename T>
void relay(T&& arg) {
    process(std::forward<T>(arg));  // 完美转发
}

int main() {
    int a = 5;

    relay(a);   // a 是左值 → 输出 Lvalue
    relay(5);   // 5 是右值 → 输出 Rvalue

    return 0;
}
